#!/bin/bash

# 自动化部署脚本
# 使用方法: ./deploy.sh [dev|prod]

set -e

# 获取环境参数
ENV=${1:-dev}
APP_NAME="hnlg-ws-api"
LOG_DIR="./logs"

echo "🚀 开始部署 $APP_NAME 到 $ENV 环境..."

# 检查 Node.js 版本
echo "📋 检查 Node.js 版本..."
node_version=$(node -v)
echo "当前 Node.js 版本: $node_version"

if [[ "$node_version" < "v16." ]]; then
    echo "❌ 错误: 需要 Node.js 16.x 或更高版本"
    exit 1
fi

# 检查 PM2 是否安装
if ! command -v pm2 &> /dev/null; then
    echo "📦 安装 PM2..."
    npm install -g pm2
else
    echo "✅ PM2 已安装"
fi

# 创建日志目录
echo "📁 创建日志目录..."
mkdir -p $LOG_DIR

# 安装依赖
echo "📦 安装生产依赖..."
npm install --production

# 检查环境变量文件
if [ ! -f ".env.local" ]; then
    echo "⚠️  警告: .env.local 文件不存在，请确保已正确配置环境变量"
    echo "参考 deploy.md 文件中的环境变量配置说明"
fi

# 停止现有进程
echo "🛑 停止现有进程..."
pm2 stop $APP_NAME 2>/dev/null || echo "没有运行中的进程"

# 启动应用
echo "🚀 启动应用..."
if [ "$ENV" = "dev" ]; then
    pm2 start ecosystem.config.js --env development
else
    pm2 start ecosystem.config.js --env production
fi

# 保存 PM2 配置
pm2 save

# 设置 PM2 开机自启
pm2 startup

echo "✅ 部署完成!"
echo ""
echo "📊 应用状态:"
pm2 status
echo ""
echo "📝 查看日志: pm2 logs $APP_NAME"
echo "🔄 重启应用: pm2 restart $APP_NAME"
echo "🛑 停止应用: pm2 stop $APP_NAME"
echo ""
echo "🌐 应用访问地址: http://localhost:3010"
echo "📚 API文档地址: http://localhost:3010/docs/preview.html"